<?php

declare(strict_types=1);

namespace Zlf\AppValidate\Rule;

use Zlf\Unit\Is;

/**
 * 必选验证器
 */
class RequiredChooseValidate extends RuleAbstract
{
    /**
     * 默认错误消息
     * @var string
     */
    protected $_error = '请选择{label}';

    /**
     * 开始验证
     *
     * 验证输入值是否已被选择（即非空）。如果输入值不为空，则验证通过。
     *
     * @param mixed $value 需要验证的值
     * @param string $label 字段标签，用于错误提示信息中
     * @return bool 验证结果：成功为 true，失败为 false
     */
    public function validate($value, string $label = ''): bool
    {
        // 使用 Is::notEmpty 方法检查值是否非空
        if (Is::notEmpty($value)) {
            $this->_value = $value;
            return true;
        }

        // 如果值为空，则添加错误信息并返回 false
        $this->addError(str_replace("{label}", $label, $this->_error), $label);
        return false;
    }
}